Моделирование САУ
Проектная работа - Управление роботизированной ногой
Введение
Вы изучили, как линеаризовать модель в среде Engee, а затем – как настраивать ПИД-регулятор для линейной системы.
В данной проектной работе вы сможете применить полученные знания для нахождения ЛСС роботизированной ноги и синтеза ПИД-регулятора для управления движением.
6.1. Роботизированная нога
Как показано на Рис. 6.1, система роботизированной ноги может быть рассмотрена как простой маятник. Крутящий момент электрического двигателя прилагается в области тазобедренного сустава и будет представлять собой входной сигнал, а угол поворота ноги будет представлять собой выходной сигнал.
Математическая модель простого маятника
Уравнение движения простого маятника выглядит следующим образом:
где – длина маятника, – крутящий момент, – угол поворота маятника, – масса маятника, – ускорение свободного падения.
Присутствие функции колебания в уравнении движения простого маятника показывает, что данная система является нелинейной. Ниже вам дается модель данной системы, сделанная в среде Engee, так что можно сразу переходить к линеаризации и настройке.
Описание проектной работы
В данном проекте вы должны синтезировать регулятор со следующими параметрами:
- время переходного процесса должно составлять 0.8 с
- уровень перерегулирования должен был меньше 10%.
Проект состоит из двух частей:
- в первой части вы линеаризуете систему для дальнейшего анализа с помощью инструментов для линейных систем;
- во второй части вы добавите ПИД-регулятор для получения замкнутой системы с обратной связью, а затем настроите ПИД-регулятор.
Часть 1. Линеаризация объекта управления
В первой части данного проекта вы будете линеаризовать объект управления. В данном случае нашим объектом управления является роботизированная нога. Для линеаризации системы вы будете применять знания, полученные на прошлых уроках.
✏️Задание 5.1
- Откройте модель с названием
Глава_5_задача_1_1.engee.
- Подсоедините блок В CSV-файл с названием Входной сигнал к выходу блока Ступенчатая функция. В окне настроек блока в поле Имя файла введите имя файла
rob_sys_In.csv - Подсоедините блок В CSV-файл с названием Выходной сигнал к выходу блока Коэффициент усиления-1. В окне настроек блока в поле Имя файла введите имя файла:
rob_sys_Out.csv - Запустите симуляцию модели.
В результате в рабочей папке курса вы должны получить два новых файла в формате csv, как показано ниже:
- Затем запустите следующие ячейки:
using ControlSystemIdentification, ControlSystemsBase, CSV, DataFrames; # подключаем нужные библиотеки
dataIn = CSV.read("rob_sys_In.csv", DataFrame); # считываем входные данные из файла и сохраняем в переменной dataIn
dataOut = CSV.read("rob_sys_Out.csv", DataFrame); # считываем выходные данные из файла и сохраняем в переменной dataOut
dataIn_t = dataIn[:,1]; # эти данные не используются в коде, можно удалить
dataIn_d = dataIn[:,2]; # в переменной dataIn_d храним данные входного сигнала
dataOut_t = dataOut[:,1]; # эти данные не используются в коде, можно удалить
dataOut_d = dataOut[:,2]; # в переменной dataIOut_d храним данные выходного сигнала
Ts = 0.01; # время дискретизации
d = iddata(dataOut_d, dataIn_d, Ts); # создаем объект идентификации данных во временном пространстве
sys_d = subspaceid(d, :auto); # запускаем метод идентификации модели пространства состояний
tfModel_d = tf(sys_d); # получаем передаточную функцию для дискретного пространства времени
tfModel_c = d2c(tfModel_d); # получаем передаточную функцию для непрерывного пространства времени
sys_c = ss(tfModel_c); # получаем модель в пространстве состояний для непрерывного пространства времени
# находим матрицы A, B, C, D для найденной модели в пространстве состояний
A_rob_c = sys_c.A;
B_rob_c = sys_c.B;
C_rob_c = sys_c.C;
D_rob_c = sys_c.D;
- Далее откройте модель
Глава_5_задача_1_2.engee.
- В оукне настроек блока Пространство состояний задайте значения параметров A, B, C и D равными
A_rob_c,B_rob_c,C_rob_cиD_rob_cсоответственно. - Запустите модель и постройте графики входного и выходного сигналов.
Решение
Результаты моделирования:
✏️Задание 5.2
Проверьте систему на линейность:
- В модели
Глава_5_задача_1_2.engeeзадайте значение параметра Конечное значение блока Ступенчатая функция равным10. - Запустите симуляцию модели и постройте графики входного и выходного сигналов.
Решение
При увеличении входного сигнала в 10 раз выходной сигнал также увеличился в 10 раз. Это закономерность показывает, что полученная система отвечает закону линейных систем.
Часть 2. Управление с обратной связью с помощью ПИД-регулятора
Во второй части проекта вы построите замкнутую систему управления, где в качестве контроллера будете использовать ПИД-регулятор.
✏️Задание 5.3
- Откройте модель
Глава_5_задача_3.engee.
- Добавьте в модель блок ПИД-регулятор (библиотека Базовые -> Дискретные).
- Подсоедините выход Сложение-1 ко входу блока ПИД-регулятор, а выход блока ПИД-регулятор – к плюсовому входу блока Сложение-2.
- Запустите симуляцию модели и постройте график выходного сигнала.
Решение
Модель:
Результаты моделирования: